package lucky.xiong.api.List;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.List;

public class List去重 {

    public static void main(String[] args) {
        // m4();

        List<Integer> srcList = Arrays.asList(1,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10);


        // M5 将m4的下标对比，改为双循环进行值对比


    }

    private static void m4() {
        List<Integer> srcList = Arrays.asList(1,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10);
        /**
         * M4 ： 使用循环坐标去除重复 ， 类似双指针 ， 按照值找到下标
         * 如果下标不同，表示有重复需要删除
         */
        List<Integer>  m4 = new ArrayList<>(srcList);
        // indexOf 从前往后找
        System.out.println("位置前"+ m4.indexOf(1));
        // lastIndexOf 从后往前找
        System.out.println("位置后"+ m4.lastIndexOf(1));
        // 这里循环的是原数组
        for (Integer i : srcList) {
            if (m4.indexOf(i) != m4.lastIndexOf(i)) {
                m4.remove(i);
            }
        }
        m4.forEach(s -> System.out.printf(s+ " "));
    }

    // M1  for循环后用contains方法 , 不包含就用新数组装入。
//        List<String> a = new ArrayList<>();
//         M2  使用HASHSET / LINKED HASHSET 之类的天生不重复数据结构构造。
//        new ArrayList<>(new LinkedHashSet<>());
    // m3 使用stream
//        srcList.stream().distinct().forEach(System.out::println);
}
